var Twitter = {};
(function(){
	//UI関連
	Twitter.UI = {};
	//本体となるTableView
	Twitter.UI.tableView = Titanium.UI.createTableView();
	
	Twitter.tableTop = function(i){
		Twitter.UI.tableView = Titanium.UI.createTableView({top:i});
	}
	
	//個々のTableViewRowを生成する
	Twitter.UI.createTableViewRow = function(tweet){
		var row = Titanium.UI.createTableViewRow();
		row.height = 'auto';
		row.add(Titanium.UI.createLabel({
			text:tweet.user.screen_name,
			top:9,
			left:64,
			height:32
		}));
		row.add(Titanium.UI.createLabel({
			text:tweet.text,
			top:32,
			left:64,
			width:'auto',
			height:'auto'
		}));
		row.add(Titanium.UI.createImageView({
			image:tweet.user.profile_image_url,
			top:8,
			left:8,
			width:48,
			height:48
		}));
		return row;
	}
	
	//プラットフォーム依存部を場合分けで記述する
	Twitter.UI.setRefreshButton = function(callback){
		//Android
		if(Titanium.Platform.osname == 'android'){
			var activity = Titanium.Android.currentActivity;
			if(activity){
				activity.onCreateOptionsMenu = function(e){
					var menu = e.menu;
					var menuItem = menu.add({title:'再読込'});
					menuItem.setIcon('img/retweet.png');
					menuItem.addEventListener('click', function(e) {
						callback();
					});
				};
			}
		}
		//iOS系
		else{
			//ウィンドウの右上ボタン
			var rightButton = Titanium.UI.createButton({
				systemButton:Titanium.UI.iPhone.SystemButton.REFRESH
			});
			Titanium.UI.currentWindow.rightNavButton = rightButton;
			rightButton.addEventListener('click',function(){
				callback();
			});
		}
	};
	
	//TwitterAPIを非同期で呼び出す
	Twitter.callAPI = function(method,url,params,callbackOnload){
		//ネットワークが使用不可
		if(Titanium.Network.online == false){
			alert('オフラインなのでデータ取得できません');
			return;
		}
		//HTTPオブジェクト性正
		var xhr = Titanium.Network.createHTTPClient();
		xhr.open(method,url,false);
		//レスポンスを受け取るイベント
		xhr.onload = function(){
			callbackOnload(xhr.status,xhr.responseText);
		}
		//エラー発生時のイベント
		xhr.onerror = function(error){
			alert(error);
		}
		//リクエスト送信
		if(params){
			xhr.send(params);
		}
		else{
			xhr.send();
		}
	};
	
	//ユーザタイムライン取得
	Twitter.loadUserTimeline = function(url){
		Twitter.callAPI('GET',url,null,function(status,responseText){
			//データクリア
			Twitter.UI.tableView.data = [];
			//受け取ったJSONデータをパース
			var json = JSON.parse(responseText);
			for(var i = 0;i < json.length;i++){
				Twitter.UI.tableView.appendRow(Twitter.UI.createTableViewRow(json[i]));
			}
		});
	};
	
	//検索結果を取得する
	Twitter.loadSearchResult = function(queryString){
		var url = 'http://search.twitter.com/search.json';
		Twitter.callAPI('GET',url,{q: queryString},function(status,responseText){
			//データクリア
			Twitter.UI.tableView.data = [];
			//受け取ったJSONデータをパース
			var json = JSON.parse(responseText);
			for(var i = 0;i < json.results.length;i++){
				//レイアウトの違いを吸収
				var tweet = json.results[i];
				tweet.user = {};
				tweet.user.screen_name = tweet.from_user;
				tweet.user.name = tweet.from_user;
				tweet.user.profile_image_url = tweet.profile_image_url;
				Twitter.UI.tableView.appendRow(Twitter.UI.createTableViewRow(tweet));
			}
		});
		
	};
	
})();
